package com.sqlcheck.service;

import com.sqlcheck.entity.ScanResult;
import com.sqlcheck.model.SqlStatement;
import com.sqlcheck.common.enums.DatabaseType;

import java.util.List;

public interface CompatibilityRuleEngine {

        /**
         * 检查SQL语句的兼容性
         *
         * @param sqlStatement SQL语句对象
         * @param sourceType   源数据库类型
         * @param targetType   目标数据库类型
         * @param taskId       任务ID
         * @return 扫描结果列表
         */
        List<ScanResult> checkCompatibility(SqlStatement sqlStatement,
                        DatabaseType sourceType,
                        DatabaseType targetType,
                        Long taskId);

        /**
         * 批量检查SQL语句的兼容性
         *
         * @param sqlStatements SQL语句列表
         * @param sourceType    源数据库类型
         * @param targetType    目标数据库类型
         * @param taskId        任务ID
         * @return 扫描结果列表
         */
        List<ScanResult> checkCompatibility(List<SqlStatement> sqlStatements,
                        DatabaseType sourceType,
                        DatabaseType targetType,
                        Long taskId);
}